#ifndef __LINKED_LIST_H
#define __LINKED_LIST_H


#ifndef MINE_DATA_DEFINE
#define MINE_DATA_DEFINE

typedef unsigned int    u32;
typedef unsigned short  u16;
typedef unsigned char   u8;

typedef signed int 	 s32;
typedef signed short s16;
typedef signed char  s8;

#endif


struct list_node
{
	struct list_node *last;
	struct list_node *next;	
};

struct list_single_node
{
	struct list_single_node *next;	
};


#ifdef __cplusplus
extern "C" {
#endif

void list_node_init( struct list_node *src );
void list_insert_after( struct list_node *src, struct list_node *obj );
void list_insert_before( struct list_node *src, struct list_node *obj );
void list_remove_node( struct list_node *obj );

void list_single_init( struct list_single_node*src );
void list_single_insert( struct list_single_node *src, struct list_single_node *obj );
void list_single_remove( struct list_single_node *head_ptr, struct list_single_node *obj );

#ifdef __cplusplus
}
#endif


#endif


